트러블슈팅 기법

쿠버네티스 환경에서 문제가 발생했을 때 체계적으로 진단하고 해결하는 방법입니다.

주요 트러블슈팅 영역

클라우드 네트워크 개념과 비교

실습 예시

파드 트러블슈팅

# 파드 상태 확인
kubectl get pods

# 파드 상세 정보 확인
kubectl describe pod <pod-name>

# 파드 로그 확인
kubectl logs <pod-name>
kubectl logs <pod-name> -c <container-name>  # 다중 컨테이너 파드의 경우

# 이전 인스턴스 로그 확인
kubectl logs <pod-name> --previous

# 파드 내부 디버깅을 위한 임시 컨테이너 실행
kubectl debug <pod-name> -it --image=busybox --target=<container-name>

네트워크 트러블슈팅

# 서비스 엔드포인트 확인
kubectl get endpoints <service-name>

# DNS 확인
kubectl run curl --image=curlimages/curl -i --tty -- sh
# 컨테이너 내부에서:
nslookup kubernetes.default.svc.cluster.local

# 서비스 연결 테스트
kubectl run test --image=busybox -i --tty --rm -- wget -qO- <service-name>.<namespace>.svc.cluster.local

노드 트러블슈팅

# 노드 상태 확인
kubectl get nodes
kubectl describe node <node-name>

# 노드 리소스 사용량 확인
kubectl top node

# kubelet 로그 확인 (노드에서 직접)
journalctl -u kubelet

# 노드 컴포넌트 상태 확인
kubectl get componentstatuses

일반적인 문제 및 해결 방법

파드가 'Pending' 상태에 머무르는 경우

파드가 'CrashLoopBackOff' 상태인 경우

서비스 연결 문제

인증/인가 문제